這幾年,AI 工具如雨後春筍般湧現,從 ChatGPT、Claude 到 Gemini,以及各種生成式平台,無論是當成新奇工具體驗,還是正式導入產品流程,幾乎每位工程師都已經接觸過。然而,真正讓人感到困惑的,往往不是模型本身的能力,而是——到底該從哪裡開始?
即便是熟悉 API 串接與系統設計的開發者,面對大型語言模型(LLM)這類帶有語意推理能力的工具時,依然會遇到許多新挑戰。例如:模型該怎麼整合進既有系統?資料應該如何準備與提供?流程又該如何封裝才能維持可擴展性?
因此,本系列將從實務開發角度出發,透過 iThome 鐵人賽 30 天的挑戰,帶來一條循序漸進的學習路徑:從 OpenAI API 基礎串接開始,逐步深入提示工程(Prompt Engineering)、RAG(Retrieval-Augmented Generation)、AI Agent 流程設計,到本地 LLM 部署,最終建立出一套模組化、可維護且具有擴展性的 AI 開發架構。
在規劃這個系列時,我希望將自己在學習與實作 AI 應用的經驗,整理成一條有脈絡的學習路徑。過去常常遇到的情況是,概念理解起來不難,但要真正落地到專案時卻容易卡關。因此,我在撰寫時不只著重於工具的介紹,而是設計了一個從基礎到完整應用的循序流程,協助把抽象的想法轉換成可執行的實作。
在內容安排上,我會先從 OpenAI API 的基礎應用開始,帶領大家逐步掌握模型的使用方法與提示設計技巧。接著學習如何運用 LangChain 開發框架,將零散功能組織成可維護且擴充的流程;再進一步探討 RAG 的實際應用,讓 AI 能結合並檢索外部資料源;隨後透過 LangGraph 的範例實作,展示如何打造具備推理能力且支持人機協作的 AI Agent;最後分享 本地模型部署 的實務經驗,並探討如何在確保資料安全的同時,滿足系統靈活性的需求。
透過這樣的安排,我希望把過去摸索累積的經驗,轉化成一套可重複應用、可持續維護的開發思維與方法,讓這個系列不只是學習記錄,也能成為實務開發的參考。
目前市面上的 AI 教學與應用案例大多以 Python 為主,原因在於其生態成熟、工具齊全。但在這個系列中,我選擇以 Node.js 作為主要開發平台,主要考量如下:
熟悉語言、快速上手:對多數 Web 開發工程師而言,JavaScript/TypeScript 已是日常開發的核心語言。選擇 Node.js 能直接沿用既有知識與工具,避免語言切換帶來的學習與維護成本,讓開發者能更專注在應用邏輯與系統整合。
擅長整合 API 與外部服務:AI 應用不僅涉及模型呼叫,往往還需要串接外部平台、第三方資料來源,甚至建立 Webhook、CLI 工具或排程任務。Node.js 在這方面有豐富套件支援,加上非同步開發模式,能快速構建互動型與延展性強的 AI 工具。
LangChain.js 生態日益完整:雖然 LangChain 起步於 Python,但 LangChain.js 的發展極為快速,如今已涵蓋 Prompt 模組化、記憶系統、向量資料庫串接、Tool Calling、Agent 模型等核心功能,對大多數應用場景而言已相當成熟,且持續活躍維護中。
自然融入現有系統架構:許多企業與團隊的應用系統本就使用 Node.js 作為 API 層或 BFF(Backend for Frontend)。在這樣的基礎上導入 AI 能力,不僅能降低整合摩擦,也方便部署與維護。無論是內部知識檢索、客服機器人,或智慧化操作介面,都能順暢接軌現有開發流程。
總結來說,本系列的目的在於讓 熟悉 Node.js 的開發者,能以最小的學習成本切入 AI 應用開發。不必轉換語言,也無需深入機器學習理論,只要掌握 API 串接、Prompt 設計與系統封裝,就能逐步建構出可落地、具實務價值的 AI 工具與服務。
接下來的內容會依照不同主題逐步展開,協助讀者從基礎知識到完整應用邏輯建立:
OpenAI API 基礎應用篇:從零開始認識 OpenAI API,學習如何透過 Node.js 串接 GPT 模型,並掌握提示工程、回應風格調控以及工具呼叫等功能,奠定開發 AI 應用的基礎。
LangChain 核心應用篇:進一步探索 LangChain 這個 LLM 框架,從 Prompt 模板設計、輸出解析、流程鏈組合到工具呼叫,一步步建立可重複使用且模組化的 AI 應用程式邏輯。
RAG 實戰應用篇:深入 RAG 檢索增強生成的設計模式,學習如何載入、分割文件,使用嵌入模型與向量資料庫建立知識庫,並打造具備檢索與問答能力的 AI 系統。
LangGraph AI Agent 實作篇:進入更高階的應用層次,認識 AI Agent 的自主決策能力,並透過 LangGraph 打造具備推理、協作、人機互動與記憶的 Agent,讓 AI 不再只是回應工具,而能成為完整的智慧系統。
本地模型部署篇:探討在本地端運行 LLM 的需求與方法,包含為什麼要考慮本地部署、如何使用 Ollama 建立環境,以及如何結合雲端與本地模型,打造混合式架構以兼顧靈活性與安全性。
整個過程不只是功能實作,更希望建立一套可重複應用、可持續維護的開發思維與流程。不論是實作個人專案,或是在公司內部導入 AI 應用,都能有明確的起點與方法,並逐步累積成一套可實戰的 AI 開發工具鏈。
在正式進入主題之前,請先準備好你的開發環境,確保後續能順利進行實作環節。
Node.js 是我們使用的開發平台,它是基於 Chrome V8 引擎的 JavaScript 執行環境。安裝 Node.js 最簡單的方式,就是從 Node.js 官方網站下載。
網站會依照你目前的作業系統環境提供適合下載的版本,一般來說,選擇 LTS (Long Term Support) 版本下載即可,這是官方長期支援的穩定版本,如果你想體驗 Node.js 最新的功能,可以選擇下載最新版。
另一種安裝方式是透過 NVM (Node Version Manager)。顧名思義,NVM 是一款 Node.js 的版本管理工具,能讓你同時安裝多個版本,並在不同版本之間自由切換,非常適合需要在不同專案間切換環境的開發者。目前 NVM 也支援 Windows,相關安裝方式可參考官方 Repo。
Visual Studio Code 是一款跨平台的免費原始碼編輯器,提供了許多豐富的 延伸模組 (Extensions),使用者可以安裝這些工具來提升開發生產力。
你可以直接從官方網站下載並安裝 Visual Studio Code。當然,這並非唯一選擇,若你習慣使用 Vim、Emacs,或是支援 AI 的現代開發工具如 Windsurf、Cursor,也完全沒有問題,選擇你最熟悉的工具即可。
雖然還沒進入正式的實作階段,但後續會經常需要建立新專案。因此,這裡先示範如何快速建立一個最小化的 Node.js 專案架構,並搭配 TypeScript 開發環境。透過這個步驟,你可以熟悉專案結構、工具設定與執行流程,後續實作時即可直接套用。本系列接下來的文章中,將不再重複說明專案建立的細節。
首先,打開終端機(Terminal),建立一個新的資料夾,並透過 npm
初始化一個名為 my-project
的 Node.js 專案:
mkdir my-project && cd my-project
npm init -y
執行後會在資料夾內產生一個 package.json
檔案,用來記錄專案所需的套件與指令腳本。
-y
代表自動套用預設值快速建立package.json
。如果想自訂名稱、版本或作者資訊,可以省略-y
,依提示逐步輸入。
接著安裝開發 TypeScript 所需的工具:
npm install --save-dev typescript ts-node @types/node
這些套件的功能說明如下:
typescript
:TypeScript 編譯器,負責將 .ts
檔案轉換成瀏覽器或 Node.js 能理解的 JavaScript。ts-node
:可直接執行 TypeScript 程式,開發階段不需先編譯就能快速測試。@types/node
:提供 Node.js API 的 TypeScript 型別提示與檢查,例如 fs
、path
等模組。這些是「開發用」套件,因此使用
--save-dev
安裝。
執行以下指令會建立預設的 TypeScript 設定檔:
npx tsc --init
開啟 tsconfig.json
,將內容調整如下:
{
"compilerOptions": {
"target": "es2020",
"module": "commonjs",
"outDir": "./dist",
"rootDir": "./src",
"strict": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"skipLibCheck": true
},
"include": ["src"],
"exclude": ["node_modules"]
}
這樣設定後,未來我們的程式碼都會放在 src/
資料夾中,編譯後的 JavaScript 會輸出到 dist/
。
TypeScript 專案通常會將原始碼放在 src/
資料夾內,我們來建立它:
mkdir src
touch src/index.ts
這邊的 index.ts
就是我們之後要寫主程式的地方。
打開 package.json
,在 "scripts"
欄位加入以下內容:
"scripts": {
"start": "node dist/index.js",
"dev": "ts-node src/index.ts",
"build": "tsc"
}
這樣就能透過簡單的指令執行你的專案:
npm run dev
:直接執行 .ts
程式(不需事先編譯)。npm run build
:編譯 TypeScript 程式為 JavaScript。npm start
:執行編譯後的 JavaScript 程式(dist/index.js)。建議在開發階段用
dev
,上線或測試階段用build
與start
。
.gitignore
檔案如果你有使用 Git 作版本控制,建議加入 .gitignore
避免把不必要的檔案加入版本庫:
node_modules/
dist/
.env
node_modules/
:相依套件目錄,內容可透過安裝依賴重新產生,無需上傳。dist/
:編譯輸出的檔案,通常由原始碼重新建置即可。.env
:環境變數設定檔,會存放 API 金鑰等敏感資訊,必須避免被公開。現在我們還沒寫任何邏輯,不過可以測試開發指令是否正常運作。
請先在 src/index.ts
寫入簡單程式碼:
console.log('Hello World');
然後依序執行:
npm run dev # 執行 src/index.ts(開發階段)
npm run build # 編譯 TypeScript
npm start # 執行編譯後的 JavaScript 程式
你應該會看到終端機輸出:
Hello World!
如果上述流程都能正常運作,就代表我們的 TypeScript 開發環境已經準備好了!
AI 看起來充滿潛力,但真正落地仍仰賴穩健的工程實作。本系列將從工程師角度出發,聚焦實務技術與開發流程,陪你逐步建立起一套完整的 AI 應用基礎。
如果你也想親手打造一個 AI 工具,邀請你一起從明天開始,每天前進一點點。30 天之後,你會發現,自己已經擁有一套完整的 AI 系統架構,能應用於真實場景中。
我們明天見!